#ifndef __IAutoLoadableFileObject_H__
#define __IAutoLoadableFileObject_H__

/***
 * @class IAutoLoadableFileObject
 * Используется примерно для того же что и ILoadableFileObject, но этот класс умеет сам
 * перезагрузить ресурс, если имя файла изменилось
 * */
class IAutoLoadableFileObject:public virtual IAutoLoadableFileObject,public virtual irr::ILoadableObject{
public:
	IAutoLoadableFileObject(irr::IrrlichtDevice*device):ILoadableObject(device){
		//nothing...
	}
	
	/***
	* Устанавливает новое имя файла. Если объект загружен, то автоматический перезагрузит нужные данные
	*
	* @param path новый путь к файлу
	* */
	virtual void setFileName(irr::io::path path){
		if (getFileName()==path)
			return;
		if (isLoaded()){
			unload();
			ILoadableFileObject::setFileName(path);
			load();
		}else
			ILoadableFileObject::setFileName(path);
	}
};

#endif
